SRCS = 'src/main/java/com/google/gerrit/pgm/'
RSRCS = 'src/main/resources/com/google/gerrit/pgm/'

INIT_API_SRCS = glob([SRCS + 'init/api/*.java'])

BASE_JETTY_DEPS = [
  '//gerrit-common:server',
  '//gerrit-extension-api:api',
  '//gerrit-gwtexpui:linker_server',
  '//gerrit-gwtexpui:server',
  '//gerrit-httpd:httpd',
  '//gerrit-server:server',
  '//gerrit-sshd:sshd',
  '//lib:guava',
  '//lib/guice:guice',
  '//lib/guice:guice-assistedinject',
  '//lib/guice:guice-servlet',
  '//lib/jgit/org.eclipse.jgit:jgit',
  '//lib/log:api',
  '//lib/log:log4j',
]

DEPS = BASE_JETTY_DEPS + [
  '//gerrit-reviewdb:server',
  '//lib/log:jsonevent-layout',
]

java_library(
  name = 'init-api',
  srcs = INIT_API_SRCS,
  deps = DEPS + ['//gerrit-common:annotations'],
  visibility = ['PUBLIC'],
)

java_sources(
  name = 'init-api-src',
  srcs = INIT_API_SRCS,
  visibility = ['PUBLIC'],
)

java_library(
  name = 'init',
  srcs = glob([SRCS + 'init/*.java']),
  resources = glob([RSRCS + 'init/*']),
  deps = DEPS + [
    ':init-api',
    ':util',
    '//gerrit-common:annotations',
    '//gerrit-lucene:lucene',
    '//lib:args4j',
    '//lib:derby',
    '//lib:gwtjsonrpc',
    '//lib:gwtorm',
    '//lib:h2',
    '//lib/commons:validator',
    '//lib/mina:sshd',
  ],
  provided_deps = ['//gerrit-launcher:launcher'],
  visibility = [
    '//gerrit-acceptance-framework/...',
    '//gerrit-acceptance-tests/...',
    '//gerrit-war:',
  ],
)

REST_UTIL_DEPS = [
  '//gerrit-cache-h2:cache-h2',
  '//gerrit-util-cli:cli',
  '//lib:args4j',
  '//lib:gwtorm',
  '//lib/commons:dbcp',
]

java_library(
  name = 'util',
  deps = DEPS + REST_UTIL_DEPS,
  exported_deps = [':util-nodep'],
  visibility = [
    '//gerrit-acceptance-tests/...',
    '//gerrit-gwtdebug:gwtdebug',
    '//gerrit-war:',
  ],
)

java_library(
  name = 'util-nodep',
  srcs = glob([SRCS + 'util/*.java']),
  provided_deps = DEPS + REST_UTIL_DEPS,
  visibility = ['//gerrit-acceptance-framework/...'],
)

JETTY_DEPS = [
  '//lib/jetty:jmx',
  '//lib/jetty:server',
  '//lib/jetty:servlet',
]

java_library(
  name = 'http',
  deps = DEPS + JETTY_DEPS,
  exported_deps = [':http-jetty'],
  visibility = ['//gerrit-war:'],
)

java_library(
  name = 'http-jetty',
  srcs = glob([SRCS + 'http/jetty/*.java']),
  provided_deps = JETTY_DEPS + BASE_JETTY_DEPS + [
    '//gerrit-launcher:launcher',
    '//gerrit-reviewdb:client',
    '//lib:servlet-api-3_1',
  ],
  visibility = ['//gerrit-acceptance-framework/...'],
)

REST_PGM_DEPS = [
  ':http',
  ':init',
  ':init-api',
  ':util',
  '//gerrit-cache-h2:cache-h2',
  '//gerrit-gpg:gpg',
  '//gerrit-lucene:lucene',
  '//gerrit-oauth:oauth',
  '//gerrit-openid:openid',
  '//lib:args4j',
  '//lib:gwtorm',
  '//lib:protobuf',
  '//lib:servlet-api-3_1',
  '//lib/auto:auto-value',
  '//lib/prolog:cafeteria',
  '//lib/prolog:compiler',
  '//lib/prolog:runtime',
]

java_library(
  name = 'pgm',
  resources = glob([RSRCS + '*']),
  deps = DEPS + REST_PGM_DEPS + [
    ':daemon',
  ],
  visibility = [
    '//:',
    '//gerrit-acceptance-tests/...',
    '//gerrit-gwtdebug:gwtdebug',
    '//tools/eclipse:classpath',
    '//Documentation:licenses.txt',
  ],
)

# no transitive deps, used for gerrit-acceptance-framework
java_library(
  name = 'daemon',
  srcs = glob([SRCS + '*.java', SRCS + 'rules/*.java']),
  resources = glob([RSRCS + '*']),
  deps = ['//lib/auto:auto-value'],
  provided_deps = DEPS + REST_PGM_DEPS + [
    '//gerrit-launcher:launcher',
  ],
  visibility = [
    '//gerrit-acceptance-framework/...',
    '//gerrit-gwtdebug:gwtdebug',
  ],
)

java_test(
  name = 'pgm_tests',
  srcs = glob(['src/test/java/**/*.java']),
  deps = [
    ':init',
    ':init-api',
    ':pgm',
    '//gerrit-common:server',
    '//gerrit-server:server',
    '//lib:guava',
    '//lib:junit',
    '//lib/easymock:easymock',
    '//lib/guice:guice',
    '//lib/jgit/org.eclipse.jgit:jgit',
    '//lib/jgit/org.eclipse.jgit.junit:junit',
  ],
  source_under_test = [':pgm'],
)
